Color conversion processes convert color data captured, created, or otherwise used by one device to data that is appropriate for use by or with another device. For example, digital scanner systems often use an optical imaging system to create a digital color image in an additive color space, such as the red, blue, green (RGB) color space. However, digital printer systems often use a subtractive color mixing process, such as the cyan, magenta, yellow, and key (CMYK) color, for producing printed color images. Accordingly, a color conversion process may be utilized to convert color data provided by the foregoing digital scanner system in an additive color space to a subtractive color space appropriate to the aforementioned digital printer system.
The color conversion transformation is usually a highly non-linear vector function which is difficult to accurately represent as a set of polynomial equations. Accordingly, color conversion processes often employ a multi-dimensional color look up table (CLUT) to represent the transformation between color spaces. The input color space, however, is relatively sparsely sampled when generating such a CLUT because fully sampling the color space requires significant resources (e.g., memory, processor cycles, etc.) which may not be available or practical. Color conversion processes will thus perform interpolation to compute the entries that are not discretely represented in the CLUT. The model that underlies the multi-dimensional CLUT, however, is non-linear and thus the results of the linear interpolation that is generally utilized can include readily visible errors.
For example, color conversion processes converting from RGB color space to CMYK color space generally utilize interpolation within a three-dimensional (3D) RGB CLUT. The interpolation involves a series of calculations that are often time consuming and/or logic intensive and the results can also be poor. Using tetrahedral interpolation while trying to print a gray ramp, for example, hue changes in the gray ramp may be readily visible as the interpolation makes steps in C, M, Y, and K, but not at the same gray level. For instance, the color conversion process interpolation may make a step in the C axis without making a step in the M and Y axes, thus resulting in a gray pixel in from the RGB color space having a blue tinge to it in the CMYK color space. Even where the interpolation of the color conversion process selects colors for two adjacent pixels that would visually appear not to be different otherwise, the use of these colors in the context of a grayscale ramp may result in visible artifacts (e.g., Mach band wherein an artificially light or dark band is present at the boundary of the pixels).
Attempts have been made to provide color conversion without the use of typical interpolation techniques. For example, “Fast color conversion algorithm allowing non-uniform table sampling,” Tom Schuneman et al. (Motorola, Inc. Dec. 17, 2003), the disclosure of which is hereby incorporated herein by reference, describes a method for performing fast conversion between color spaces that uses the CMYK values from one of the corners of the particular sub-cube containing the input RGB value in the 3D color table. Since one of the values from the table is always used, there is no interpolation. A drawback to this method is that it only uses a pseudo random number generator to pick which corner of the sub-cube in proportion to how close the input value was to that corner. Thus, a series of input values in the center of a 3D sub cube would result in an even distribution of all 8 corner values and RGB values nearer one corner in the 3D sub cube would get a higher proportion of the value from that corner. This results in undesired artifacts being present in the color converted image. For example, as a gray axis is traversed between gray nodes, gray levels halfway between nodes receive equal contributions from the other 6 corners of the sub-cube that are not gray nodes (i.e., these other 6 nodes are not gray and do not necessarily average to gray). Thus, the gray ramp provided by the method has a colored hue between gray nodes, rather than providing true grays in the color converted image. Moreover, the texture of a solid area of a single color in the results provided by the method depends on how close the input color was to a sub-cube corner. If the input color was very close to a corner, the texture was smooth with the dominant color and a sprinkling of other colors. However, if the input color was near the middle of a sub-cube, the texture of the results provided by the method had a mottled mixture of colors which appears as a texture difference (e.g., areas 401-404 of FIG. 4). Accordingly, artifacts associated with texture differences are present in the color converted image.